'use strict';	//严格模式
// 班级管理的控制器文件：增删改查 等操作

const xtpl = require('xtpl');
const path = require('path');
const moment = require('moment');	// 转换时间格式的模块

const db = require('../configs/database.js');

const baseCtr = require('./baseController.js');

// 班级添加
module.exports.classAdd = function(req,res){
	// xtpl.renderFile('',{},function(){})
	xtpl.renderFile(
		path.join(__dirname,'../views/admin/class_add.html'),
		{
			page:'clsAdd'
		},
		function(err,content){
			// 设置输出的内容类型 html
			res.setHeader('Content-Type','text/html;charset=utf-8');
			res.send(content);
		}
	)
}

// 学生班级添加操作
module.exports.classAddData = function(req,res){
	// 测试
	// console.log(1);
	
	// console.log(req.body.class_name)
	// 添加学生的逻辑：要先检查是否已录入，没有才可以添加
	var where = `class_name='${req.body.class_name}'`;
	db.table('class').field('class_id').where(where).find().then(function(result){
		if(JSON.stringify(result)=='{}'){
			// 接下来这里做添加
			// console.log(req.files.class_img);
			var data = {
				class_name:req.body.class_name,
				class_time:Date.parse(req.body.class_time)/1000,

			}
			// console.log(data)
			db.table('class').add(data).then(function(){
				console.log('添加成功')
				res.redirect('/admin/class/class_list');  // redirect 重定向，跳转
			}).catch(function(err){
				console.log(err)	// 命令行显示(方便调试)
			})
		}else{
			baseCtr.sendMsg('该班级已存在',res);
		}

		// res.end();	// 结束程序，跳转不能加这个
	}).catch(function(err){
		//err为具体的错误信息
		console.log(err)	// 命令行显示(方便调试)
	})
}

// 班级列表
module.exports.classList = function(req,res){
	var pn = req.query.pn!=undefined?req.query.pn:1;	// 页码
	var limit = 3;	// 每页显示1条记录
	var start = (pn-1)*limit;	// 每页第1条记录的下标

	// 查询班级
	db.table('class').limit(start,limit).select().then(function(data){

		// 查询总数
		db.table('class').count('class_id').then(function(total){
			var endPn = Math.ceil(total/limit);		// 最后一页
			var pageArr = [];
			for(var i=1; i<=endPn; i++){
				pageArr.push(i)
			}

			for(var key in data){
				// 循环处理每个班级的开班时间（重新做一个赋值）
				data[key].class_time = moment(data[key].class_time*1000).format('YYYY-MM-DD')
			}
			xtpl.renderFile(
				path.join(__dirname,'../views/admin/class_list.html'),
				{
					page:'clsList',
					clsList:data,		// 数组，值是json对象
					start:parseInt(start),
					pn:parseInt(pn),
					endPn:endPn,
					pageArr:pageArr
				},
				function(err,content){
					// 设置输出的内容类型 html
					res.setHeader('Content-Type','text/html;charset=utf-8');
					res.send(content);
				}
			)
		});

		
	})
	
}

// 删除班级
module.exports.classDelete = function(req,res){
	var id = req.params.id;
	// 逻辑：要先检查该班级是否有学生，有则提示不能删除
	db.table('student').where({class_id:id}).count('stu_id').then(function(total){
		if(total>0){
			// 有记录，也说明有学生选择了该班级
			baseCtr.sendMsg('该班级现有'+total+'位小伙伴，暂不能删除',res)
		}else{
			// 记录为0，就可以直接删除
			db.table('class').where({class_id:id}).delete().then(function(){
				// 跳转到班级列表
				res.redirect('/admin/class/class_list');
			});
		}
	});
}
// 多选删除
// {id: ['IN', '1, 2, 3']}
module.exports.classDeleteAll = function(req,res){ //班级批量删除有bug
	// console.log(req.body.delStr) //不能接受到数组
	// 接下来就是删除操作
	db.table('student').where({class_id: ['IN', req.body.delStr]}).count('stu_id').then(function(total){
		console.log(total);
		// baseCtr.sendMsg('该班级现有'+total+'位小伙伴，暂不能删除',res)
		if(total>0){
			console.log(1);
			// 有记录，也说明有学生选择了该班级
			// alert(total)
			baseCtr.sendMsg('该班级现有'+total+'位小伙伴，暂不能删除',res)
		}
		else{
			db.table('class').where({class_id: ['IN', req.body.delStr]}).delete().then(function(affectRows){
				// 删除成功
				console.log(affectRows);
				res.redirect('/admin/class/class_list');
			});	
		}
	});
}
// 学生修改页面
module.exports.classEdit = function(req,res){
		db.table('class').where({class_id:req.params.id}).find().then(function(classData){
			
			// 转换时间（记得时间戳是：毫秒）
			classData.class_time = moment(classData.class_time*1000).format('YYYY-MM-DD');
			// 显示视图
			xtpl.renderFile(
				path.join(__dirname,'../views/admin/class_edit.html'),	// 加载视图文件
				{
					page:'classAdd',	// 页面名称
					classData:classData
				},  // 第2个参数（主要是用于传给视图的）
				function(err,content){
					// 设置输出的内容类型 html
					res.setHeader('Content-Type','text/html;charset=utf-8');
					res.send(content);
				}
			)


	}).catch(function(err){
		//err为具体的错误信息
		console.log(err)	// 命令行显示(方便调试)
	})
}

// 学生修改操作
module.exports.classEditData = function(req,res){
	var where = `class_id!='${req.params.id}' and (class_name='${req.body.class_name}' )`;
	db.table('class').field('class_id').where(where).find().then(function(result){
		// console.log(JSON.stringify(result))  // {} 字符串的
		// console.log(JSON.stringify(result)=='{}')
		if(JSON.stringify(result)=='{}'){
			// 接下来这里做修改
			// console.log(req.files.class_img);
			var data = {
				class_name:req.body.class_name,
				class_time:Date.parse(req.body.class_time)/1000,
			}

			// console.log(data)
			db.table('class').where({class_id:req.params.id}).update(data).then(function(){
				console.log('修改成功')
				res.redirect('/admin/class/class_list');  // redirect 重定向，跳转
			}).catch(function(err){
				//err为具体的错误信息
				console.log(err)	// 命令行显示(方便调试)
			})
		}else{
			baseCtr.sendMsg('该班级已存在',res);
		}

		// res.end();	// 结束程序，跳转不能加这个
	}).catch(function(err){
		//err为具体的错误信息
		console.log(err)	// 命令行显示(方便调试)
	})
}

// 学生修改页面
module.exports.classEdit = function(req,res){
	db.table('class').where({class_id:req.params.id}).find().then(function(classData){
		
		// 转换时间（记得时间戳是：毫秒）
		classData.class_time = moment(classData.class_time*1000).format('YYYY-MM-DD');
		// 显示视图
		xtpl.renderFile(
			path.join(__dirname,'../views/admin/class_edit.html'),	// 加载视图文件
			{
				page:'classAdd',	// 页面名称
				classData:classData
			},  // 第2个参数（主要是用于传给视图的）
			function(err,content){
				// 设置输出的内容类型 html
				res.setHeader('Content-Type','text/html;charset=utf-8');
				res.send(content);
			}
		)


}).catch(function(err){
	//err为具体的错误信息
	console.log(err)	// 命令行显示(方便调试)
})
}

// 学生修改操作
module.exports.classEditData = function(req,res){
var where = `class_id!='${req.params.id}' and (class_name='${req.body.class_name}' )`;
db.table('class').field('class_id').where(where).find().then(function(result){
	// console.log(JSON.stringify(result))  // {} 字符串的
	// console.log(JSON.stringify(result)=='{}')
	if(JSON.stringify(result)=='{}'){
		// 接下来这里做修改
		// console.log(req.files.class_img);
		var data = {
			class_name:req.body.class_name,
			class_time:Date.parse(req.body.class_time)/1000,
		}

		// console.log(data)
		db.table('class').where({class_id:req.params.id}).update(data).then(function(){
			console.log('修改成功')
			res.redirect('/admin/class/class_list');  // redirect 重定向，跳转
		}).catch(function(err){
			//err为具体的错误信息
			console.log(err)	// 命令行显示(方便调试)
		})
	}else{
		baseCtr.sendMsg('该班级已存在',res);
	}

	// res.end();	// 结束程序，跳转不能加这个
}).catch(function(err){
	//err为具体的错误信息
	console.log(err)	// 命令行显示(方便调试)
})
}